home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / wx / py / filling.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  12KB  |  319 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
  5. __cvsid__ = '$Id: filling.py 37633 2006-02-18 21:40:57Z RD $'
  6. __revision__ = '$Revision: 37633 $'[11:-2]
  7. import wx
  8. import dispatcher
  9. import editwindow
  10. import inspect
  11. import introspect
  12. import keyword
  13. import sys
  14. import types
  15. from version import VERSION
  16. COMMONTYPES = _[1]
  17. DOCTYPES = ('BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'FunctionType', 'GeneratorType', 'InstanceType', 'LambdaType', 'MethodType', 'ModuleType', 'UnboundMethodType', 'method-wrapper')
  18. SIMPLETYPES = _[2]
  19. del t
  20.  
  21. try:
  22.     COMMONTYPES.append(type(''.__repr__))
  23. except AttributeError:
  24.     []
  25.     []
  26.     []
  27. except:
  28.     []
  29.  
  30.  
  31. class FillingTree(wx.TreeCtrl):
  32.     name = 'Filling Tree'
  33.     revision = __revision__
  34.     
  35.     def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.TR_DEFAULT_STYLE, rootObject = None, rootLabel = None, rootIsNamespace = False, static = False):
  36.         wx.TreeCtrl.__init__(self, parent, id, pos, size, style)
  37.         self.rootIsNamespace = rootIsNamespace
  38.         import __main__ as __main__
  39.         if rootObject is None:
  40.             rootObject = __main__.__dict__
  41.             self.rootIsNamespace = True
  42.         
  43.         if rootObject is __main__.__dict__ and rootLabel is None:
  44.             rootLabel = 'locals()'
  45.         
  46.         if not rootLabel:
  47.             rootLabel = 'Ingredients'
  48.         
  49.         rootData = wx.TreeItemData(rootObject)
  50.         self.item = self.root = self.AddRoot(rootLabel, -1, -1, rootData)
  51.         self.SetItemHasChildren(self.root, self.objHasChildren(rootObject))
  52.         self.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.OnItemExpanding, id = self.GetId())
  53.         self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, id = self.GetId())
  54.         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id = self.GetId())
  55.         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnItemActivated, id = self.GetId())
  56.         if not static:
  57.             dispatcher.connect(receiver = self.push, signal = 'Interpreter.push')
  58.         
  59.  
  60.     
  61.     def push(self, command, more):
  62.         self.display()
  63.  
  64.     
  65.     def OnItemExpanding(self, event):
  66.         busy = wx.BusyCursor()
  67.         item = event.GetItem()
  68.         if self.IsExpanded(item):
  69.             return None
  70.         
  71.         self.addChildren(item)
  72.  
  73.     
  74.     def OnItemCollapsed(self, event):
  75.         busy = wx.BusyCursor()
  76.         item = event.GetItem()
  77.  
  78.     
  79.     def OnSelChanged(self, event):
  80.         busy = wx.BusyCursor()
  81.         self.item = event.GetItem()
  82.         self.display()
  83.  
  84.     
  85.     def OnItemActivated(self, event):
  86.         item = event.GetItem()
  87.         text = self.getFullName(item)
  88.         obj = self.GetPyData(item)
  89.         frame = FillingFrame(parent = self, size = (600, 100), rootObject = obj, rootLabel = text, rootIsNamespace = False)
  90.         frame.Show()
  91.  
  92.     
  93.     def objHasChildren(self, obj):
  94.         return bool(self.objGetChildren(obj))
  95.  
  96.     
  97.     def objGetChildren(self, obj):
  98.         busy = wx.BusyCursor()
  99.         otype = type(obj)
  100.         if (otype is types.DictType or str(otype)[17:23] == 'BTrees') and hasattr(obj, 'keys'):
  101.             return obj
  102.         
  103.         d = { }
  104.         if otype is types.ListType or otype is types.TupleType:
  105.             for n in range(len(obj)):
  106.                 key = '[' + str(n) + ']'
  107.                 d[key] = obj[n]
  108.             
  109.         
  110.         if otype not in COMMONTYPES:
  111.             for key in introspect.getAttributeNames(obj):
  112.                 
  113.                 try:
  114.                     d[key] = getattr(obj, key)
  115.                 continue
  116.                 continue
  117.  
  118.             
  119.         
  120.         return d
  121.  
  122.     
  123.     def addChildren(self, item):
  124.         self.DeleteChildren(item)
  125.         obj = self.GetPyData(item)
  126.         children = self.objGetChildren(obj)
  127.         if not children:
  128.             return None
  129.         
  130.         keys = children.keys()
  131.         keys.sort((lambda x, y: cmp(str(x).lower(), str(y).lower())))
  132.         for key in keys:
  133.             itemtext = str(key)
  134.             if type(obj) is types.DictType and type(key) is types.StringType:
  135.                 if (item != self.root or item == self.root) and not (self.rootIsNamespace):
  136.                     itemtext = repr(key)
  137.                 
  138.             child = children[key]
  139.             data = wx.TreeItemData(child)
  140.             branch = self.AppendItem(parent = item, text = itemtext, data = data)
  141.             self.SetItemHasChildren(branch, self.objHasChildren(child))
  142.         
  143.  
  144.     
  145.     def display(self):
  146.         item = self.item
  147.         if not item:
  148.             return None
  149.         
  150.         if self.IsExpanded(item):
  151.             self.addChildren(item)
  152.         
  153.         self.setText('')
  154.         obj = self.GetPyData(item)
  155.         if wx.Platform == '__WXMSW__':
  156.             if obj is None:
  157.                 return None
  158.             
  159.         
  160.         self.SetItemHasChildren(item, self.objHasChildren(obj))
  161.         otype = type(obj)
  162.         text = ''
  163.         text += self.getFullName(item)
  164.         text += '\n\nType: ' + str(otype)
  165.         
  166.         try:
  167.             value = str(obj)
  168.         except:
  169.             value = ''
  170.  
  171.         if otype is types.StringType or otype is types.UnicodeType:
  172.             value = repr(obj)
  173.         
  174.         text += '\n\nValue: ' + value
  175.         if otype not in SIMPLETYPES:
  176.             
  177.             try:
  178.                 text += '\n\nDocstring:\n\n"""' + inspect.getdoc(obj).strip() + '"""'
  179.  
  180.         
  181.         if otype is types.InstanceType:
  182.             
  183.             try:
  184.                 text += '\n\nClass Definition:\n\n' + inspect.getsource(obj.__class__)
  185.  
  186.         else:
  187.             
  188.             try:
  189.                 text += '\n\nSource Code:\n\n' + inspect.getsource(obj)
  190.             except:
  191.                 pass
  192.  
  193.         self.setText(text)
  194.  
  195.     
  196.     def getFullName(self, item, partial = ''):
  197.         name = self.GetItemText(item)
  198.         print 'item name', name
  199.         parent = None
  200.         obj = None
  201.         print 'item != self.root? %r != %r?' % (item, self.root)
  202.         if item != self.root:
  203.             parent = self.GetItemParent(item)
  204.             print 'parent = %r' % parent
  205.             obj = self.GetPyData(parent)
  206.             print 'parent.pydata = %r' % obj
  207.         
  208.         if type(obj) is types.DictType or str(type(obj))[17:23] == 'BTrees' or hasattr(obj, 'keys'):
  209.             if (item != self.root or parent != self.root or parent == self.root) and not (self.rootIsNamespace):
  210.                 name = '[' + name + ']'
  211.             
  212.         if partial:
  213.             if partial[0] == '[':
  214.                 name += partial
  215.             else:
  216.                 name += '.' + partial
  217.         
  218.         if (item != self.root or parent != self.root or parent == self.root) and not (self.rootIsNamespace):
  219.             name = self.getFullName(parent, partial = name)
  220.         
  221.         return name
  222.  
  223.     
  224.     def setText(self, text):
  225.         print text
  226.  
  227.     
  228.     def setStatusText(self, text):
  229.         print text
  230.  
  231.  
  232.  
  233. class FillingText(editwindow.EditWindow):
  234.     name = 'Filling Text'
  235.     revision = __revision__
  236.     
  237.     def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.CLIP_CHILDREN, static = False):
  238.         editwindow.EditWindow.__init__(self, parent, id, pos, size, style)
  239.         self.SetReadOnly(True)
  240.         self.SetWrapMode(True)
  241.         self.SetMarginWidth(1, 0)
  242.         if not static:
  243.             dispatcher.connect(receiver = self.push, signal = 'Interpreter.push')
  244.         
  245.  
  246.     
  247.     def push(self, command, more):
  248.         self.Refresh()
  249.  
  250.     
  251.     def SetText(self, *args, **kwds):
  252.         self.SetReadOnly(False)
  253.         editwindow.EditWindow.SetText(self, *args, **kwds)
  254.         self.SetReadOnly(True)
  255.  
  256.  
  257.  
  258. class Filling(wx.SplitterWindow):
  259.     name = 'Filling'
  260.     revision = __revision__
  261.     
  262.     def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.SP_3D | wx.SP_LIVE_UPDATE, name = 'Filling Window', rootObject = None, rootLabel = None, rootIsNamespace = False, static = False):
  263.         wx.SplitterWindow.__init__(self, parent, id, pos, size, style, name)
  264.         self.tree = FillingTree(parent = self, rootObject = rootObject, rootLabel = rootLabel, rootIsNamespace = rootIsNamespace, static = static)
  265.         self.text = FillingText(parent = self, static = static)
  266.         wx.FutureCall(1, self.SplitVertically, self.tree, self.text, 200)
  267.         self.SetMinimumPaneSize(1)
  268.         self.tree.setText = self.text.SetText
  269.         self.tree.SelectItem(self.tree.root)
  270.         self.tree.display()
  271.         self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED, self.OnChanged)
  272.  
  273.     
  274.     def OnChanged(self, event):
  275.         pass
  276.  
  277.     
  278.     def LoadSettings(self, config):
  279.         pos = config.ReadInt('Sash/FillingPos', 200)
  280.         wx.FutureCall(250, self.SetSashPosition, pos)
  281.         zoom = config.ReadInt('View/Zoom/Filling', -99)
  282.         if zoom != -99:
  283.             self.text.SetZoom(zoom)
  284.         
  285.  
  286.     
  287.     def SaveSettings(self, config):
  288.         config.WriteInt('Sash/FillingPos', self.GetSashPosition())
  289.         config.WriteInt('View/Zoom/Filling', self.text.GetZoom())
  290.  
  291.  
  292.  
  293. class FillingFrame(wx.Frame):
  294.     name = 'Filling Frame'
  295.     revision = __revision__
  296.     
  297.     def __init__(self, parent = None, id = -1, title = 'PyFilling', pos = wx.DefaultPosition, size = (600, 400), style = wx.DEFAULT_FRAME_STYLE, rootObject = None, rootLabel = None, rootIsNamespace = False, static = False):
  298.         wx.Frame.__init__(self, parent, id, title, pos, size, style)
  299.         intro = 'PyFilling - The Tastiest Namespace Inspector'
  300.         self.CreateStatusBar()
  301.         self.SetStatusText(intro)
  302.         import images as images
  303.         self.SetIcon(images.getPyIcon())
  304.         self.filling = Filling(parent = self, rootObject = rootObject, rootLabel = rootLabel, rootIsNamespace = rootIsNamespace, static = static)
  305.         self.filling.tree.setStatusText = self.SetStatusText
  306.  
  307.  
  308.  
  309. class App(wx.App):
  310.     
  311.     def OnInit(self):
  312.         wx.InitAllImageHandlers()
  313.         self.fillingFrame = FillingFrame()
  314.         self.fillingFrame.Show(True)
  315.         self.SetTopWindow(self.fillingFrame)
  316.         return True
  317.  
  318.  
  319.